package com.qianfeng.userconsumer.feign;
//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼            BUG辟易  
//          佛曰:  
//                  写字楼里写字间，写字间里程序员；  
//                  程序人员写程序，又拿程序换酒钱。  
//                  酒醒只在网上坐，酒醉还来网下眠；  
//                  酒醉酒醒日复日，网上网下年复年。  
//                  但愿老死电脑间，不愿鞠躬老板前；  
//                  奔驰宝马贵者趣，公交自行程序员。  
//                  别人笑我忒疯癫，我笑自己命太贱；  


import com.qianfeng.userconsumer.pojo.UserAddress;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * Created by jackiechan on 2022/10/19 14:45
 * feign的主要功能是通过接口的方式声明式的访问远程服务器
 * @author jackiechan
 * @version 1.0
 * @since 1.0
 */
//声明当前feign中的接口都是请求addressprovidereureka04服务的
@FeignClient(name = "addressprovidereureka04")
@RequestMapping("/address")
public interface AddressFeign {

    /**
     * 规则mapping里面是我们要请求的目标地址
     * 方法的参数会作为请求参数传递过去, 其实就是和我们的springmvc刚好反过来
     * @param id 要请求的目标接口的参数
     * @return 我们期望接口的返回数据解析成什么格式的数据
     */
//    @GetMapping("/address/info/{id}")
    @GetMapping("/info/{id}")
    UserAddress findAddressById(@PathVariable Integer id);

    /**
     * 如果当前方法有多个query paramters,需要通过 @RequestParam来标记
     *
     * @param id
     * @param name
     * @return
     */
//    @GetMapping("/address/nameid")
    @GetMapping("/nameid")
    UserAddress findByNameAndId(@RequestParam(name = "id") Integer id, @RequestParam(name = "name") String name);

    /**
     * 请求传递body类型的参数
     * @param address
     * @return
     */
//    @PostMapping("/address/add")
    @PostMapping("/add")
    int addAddress(@RequestBody UserAddress address);



}
